﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace FrontEndPlus.Módulos.Inventarios
{
    public partial class wbfrm_Reporte_Facturas : System.Web.UI.Page
    {
        #region Variables

        private WCF_Gimnasio.cls_Reporte _reporte = new WCF_Gimnasio.cls_Reporte();
        private WCF_Gimnasio.ServiceClient _servicio = new WCF_Gimnasio.ServiceClient();
        private WCF_Gimnasio.cls_Estado _estado = new WCF_Gimnasio.cls_Estado();
        private WCF_Gimnasio.cls_Servicio _servicios = new WCF_Gimnasio.cls_Servicio();
        private WCF_Gimnasio.cls_Gimnasio _gimnasio = new WCF_Gimnasio.cls_Gimnasio();
        private WCF_Gimnasio.cls_Proveedor _proveedor = new WCF_Gimnasio.cls_Proveedor();

        #endregion
        #region metodos
        private void CargarDatosEstado()
        {
            try
            {
                _estado.IdUsuarioInicioSeccion = Convert.ToInt32(HttpContext.Current.Session["idUsuario"].ToString());
                DataTable dt = _servicio.Listar(3, _estado).Tables[0];

                //Agrega Linea en blanco
                DataRow dtrow = dt.NewRow();
                dt.Rows.InsertAt(dtrow, 0);
                dt.Rows[0]["ID_ESTADO"] = "0";
                dt.Rows[0]["DESCRIPCION"] = " ";

                ddl_estado.DataTextField = "DESCRIPCION";
                ddl_estado.DataValueField = "ID_ESTADO";
                ddl_estado.DataSource = dt;
                ddl_estado.DataBind();
            }
            catch (Exception ex) { lbl_mensaje.Text = ex.Message; }
        }
        private void CargarDatosServicios()
        {
            try
            {
                _servicios.IdUsuarioInicioSeccion = Convert.ToInt32(HttpContext.Current.Session["idUsuario"].ToString());
                DataTable dt = _servicio.Listar(3, _servicios).Tables[0];

                //Agrega Linea en blanco
                DataRow dtrow = dt.NewRow();
                dt.Rows.InsertAt(dtrow, 0);
                dt.Rows[0]["ID_SERVICIO"] = "0";
                dt.Rows[0]["DESCRIPCION"] = " ";

                ddl_servicio.DataTextField = "DESCRIPCION";
                ddl_servicio.DataValueField = "ID_SERVICIO";
                ddl_servicio.DataSource = dt;
                ddl_servicio.DataBind();
            }
            catch (Exception ex) { lbl_mensaje.Text = ex.Message; }
        }
        private void CargarDatosSede()
        {
            try
            {
                _gimnasio.IdUsuarioInicioSeccion = Convert.ToInt32(HttpContext.Current.Session["idUsuario"].ToString());
                DataTable dt = _servicio.Listar(3, _gimnasio).Tables[0];

                //Agrega Linea en blanco
                DataRow dtrow = dt.NewRow();
                dt.Rows.InsertAt(dtrow, 0);
                dt.Rows[0]["ID_GIMNASIO"] = "0";
                dt.Rows[0]["NOMBRE_CENTRO"] = " ";

                ddl_sede.DataTextField = "NOMBRE_CENTRO";
                ddl_sede.DataValueField = "ID_GIMNASIO";
                ddl_sede.DataSource = dt;
                ddl_sede.DataBind();
            }
            catch (Exception ex) { lbl_mensaje.Text = ex.Message; }
        }
        private void CargarDatosProveedor()
        {
            try
            {
                _proveedor.IdUsuarioInicioSeccion = Convert.ToInt32(HttpContext.Current.Session["idUsuario"].ToString());
                DataTable dt = _servicio.Listar(3, _proveedor).Tables[0];

                //Agrega Linea en blanco
                DataRow dtrow = dt.NewRow();
                dt.Rows.InsertAt(dtrow, 0);
                dt.Rows[0]["ID_PROVEEDOR"] = "0";
                dt.Rows[0]["NOMBRE"] = " ";

                ddl_proveedor.DataTextField = "NOMBRE";
                ddl_proveedor.DataValueField = "ID_PROVEEDOR";
                ddl_proveedor.DataSource = dt;
                ddl_proveedor.DataBind();
            }
            catch (Exception ex) { lbl_mensaje.Text = ex.Message; }
        }
        private void Obtener_Parametros()
        {
            try
            {
                _reporte.IdUsuarioInicioSeccion = Convert.ToInt32(HttpContext.Current.Session["idUsuario"].ToString());

                if (txt_usuario.Text != String.Empty)
                    _reporte.Usuario = txt_usuario.Text;
                else
                    _reporte.Usuario = "%";

                if (txt_idfactura.Text != String.Empty)
                    _reporte.IdFactura = txt_idfactura.Text;
                else
                    _reporte.IdFactura = "%";

                if (txt_cliente.Text != String.Empty)
                    _reporte.Cliente = txt_cliente.Text;
                else
                    _reporte.Cliente = "%";

                if (ddl_estado.SelectedValue != "0")
                    _reporte.Estado = ddl_estado.SelectedValue;
                else
                    _reporte.Estado = "%";

                if (ddl_sede.SelectedValue != "0")
                    _reporte.Sede = ddl_sede.SelectedValue;
                else
                    _reporte.Sede = "%";

                if (txt_fecha.Text != String.Empty)
                    _reporte.Fecha = txt_fecha.Text;
                else
                    _reporte.Fecha = "%";
                if (ddl_proveedor.SelectedValue != "0")
                    _reporte.Proveedor = ddl_proveedor.SelectedValue;
                else
                    _reporte.Proveedor = "%";
                if (ddl_servicio.SelectedValue != "0")
                    _reporte.Servicio = ddl_servicio.SelectedValue;
                else
                    _reporte.Servicio = "%";

                _reporte.Reporte = Session["NombreReporte"].ToString();
            }
            catch (Exception ex) { lbl_mensaje.Text = ex.Message; }

        }
        private void habilitar(string accion)
        {
            try
            {
                if (accion == "Clientes")
                {
                    txt_idfactura.Enabled = true; txt_idfactura.BackColor = System.Drawing.Color.White;
                    txt_cliente.Enabled = true; txt_cliente.BackColor = System.Drawing.Color.White;
                    ddl_estado.Enabled = true; ddl_estado.BackColor = System.Drawing.Color.White;
                    ddl_sede.Enabled = true; ddl_sede.BackColor = System.Drawing.Color.White;
                    chk_mail.Enabled = true;
                    txt_fecha.Enabled = true; txt_fecha.BackColor = System.Drawing.Color.White;
                    b_generar.Enabled = true;
                    txt_usuario.Enabled = false; txt_usuario.BackColor = System.Drawing.Color.LightGray;
                    ddl_servicio.Enabled = false; ddl_servicio.BackColor = System.Drawing.Color.LightGray;
                    ddl_proveedor.Enabled = false; ddl_proveedor.BackColor = System.Drawing.Color.LightGray;
                    CompareValidator1.Enabled = true;
                    Session["NombreReporte"] = "CR_Facturas_Clientes.rpt";

                }
                if (accion == "Externas")
                {
                    CompareValidator1.Enabled = true;
                    txt_idfactura.Enabled = true; txt_idfactura.BackColor = System.Drawing.Color.White;
                    txt_cliente.Enabled = false; txt_cliente.BackColor = System.Drawing.Color.LightGray;
                    ddl_estado.Enabled = true; ddl_estado.BackColor = System.Drawing.Color.White;
                    ddl_sede.Enabled = false; ddl_sede.BackColor = System.Drawing.Color.LightGray;
                    chk_mail.Enabled = true;
                    txt_fecha.Enabled = true; txt_fecha.BackColor = System.Drawing.Color.White;
                    b_generar.Enabled = true;
                    txt_usuario.Enabled = true; txt_usuario.BackColor = System.Drawing.Color.White;
                    ddl_servicio.Enabled = false; ddl_servicio.BackColor = System.Drawing.Color.LightGray;
                    ddl_proveedor.Enabled = false; ddl_proveedor.BackColor = System.Drawing.Color.LightGray;
                    Session["NombreReporte"] = "CR_Facturas_Externas.rpt";

                }
                if (accion == "Servicios")
                {
                    CompareValidator1.Enabled = true;
                    txt_idfactura.Enabled = true; txt_idfactura.BackColor = System.Drawing.Color.White;
                    txt_cliente.Enabled = true; txt_cliente.BackColor = System.Drawing.Color.White;
                    ddl_estado.Enabled = false; ddl_estado.BackColor = System.Drawing.Color.LightGray;
                    ddl_sede.Enabled = false; ddl_sede.BackColor = System.Drawing.Color.LightGray;
                    chk_mail.Enabled = true;
                    txt_fecha.Enabled = false; txt_fecha.BackColor = System.Drawing.Color.LightGray;
                    b_generar.Enabled = true;
                    txt_usuario.Enabled = false; txt_usuario.BackColor = System.Drawing.Color.LightGray;
                    ddl_servicio.Enabled = true; ddl_servicio.BackColor = System.Drawing.Color.White;
                    ddl_proveedor.Enabled = false; ddl_proveedor.BackColor = System.Drawing.Color.LightGray;
                    Session["NombreReporte"] = "CR_Facturas_Servicios.rpt";
                }
                if (accion == "Proveedor")
                {
                    CompareValidator1.Enabled = true;
                    txt_idfactura.Enabled = true; txt_idfactura.BackColor = System.Drawing.Color.White;
                    txt_cliente.Enabled = false; txt_cliente.BackColor = System.Drawing.Color.LightGray;
                    ddl_estado.Enabled = true; ddl_estado.BackColor = System.Drawing.Color.White;
                    ddl_sede.Enabled = false; ddl_sede.BackColor = System.Drawing.Color.LightGray;
                    chk_mail.Enabled = true;
                    txt_fecha.Enabled = true; txt_fecha.BackColor = System.Drawing.Color.White;
                    b_generar.Enabled = true;
                    txt_usuario.Enabled = false; txt_usuario.BackColor = System.Drawing.Color.LightGray;
                    ddl_servicio.Enabled = false; ddl_servicio.BackColor = System.Drawing.Color.LightGray;
                    ddl_proveedor.Enabled = true; ddl_proveedor.BackColor = System.Drawing.Color.White;
                    Session["NombreReporte"] = "CR_Facturas_Proveedores.rpt";
                }
                if (accion == "Seleccion")
                {
                    CompareValidator1.Enabled = false;
                    txt_idfactura.Enabled = false; txt_idfactura.BackColor = System.Drawing.Color.LightGray;
                    txt_cliente.Enabled = false; txt_cliente.BackColor = System.Drawing.Color.LightGray;
                    ddl_estado.Enabled = false; ddl_estado.BackColor = System.Drawing.Color.LightGray;
                    ddl_sede.Enabled = false; ddl_sede.BackColor = System.Drawing.Color.LightGray;
                    chk_mail.Enabled = false;
                    txt_fecha.Enabled = false; txt_fecha.BackColor = System.Drawing.Color.LightGray;
                    b_generar.Enabled = false;
                    txt_usuario.Enabled = false; txt_usuario.BackColor = System.Drawing.Color.LightGray;
                    ddl_servicio.Enabled = false; ddl_servicio.BackColor = System.Drawing.Color.LightGray;
                    ddl_proveedor.Enabled = false; ddl_proveedor.BackColor = System.Drawing.Color.LightGray;
                    Session["NombreReporte"] = String.Empty;
                }
            }
            catch (Exception ex) { lbl_mensaje.Text = ex.Message; }
        }
        #endregion
        #region eventos
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                this.CargarDatosEstado();
                this.CargarDatosServicios();
                this.CargarDatosSede();
                this.CargarDatosProveedor();
            }
        }
        #endregion
        protected void b_generar_Click(object sender, EventArgs e)
        {
            if (Page.IsValid)
            {
                try
                {
                    this.Obtener_Parametros();

                    DataSet Dataset_Resultado = _servicio.Listar(2, _reporte);

                    if (Dataset_Resultado.Tables[0].Rows.Count > 0)
                    {
                        Dataset_Resultado.WriteXml("C:\\temp\\reporte.xml", XmlWriteMode.WriteSchema);

                        Response.Redirect("wbfrm_reporte.aspx?nombre=" + Session["NombreReporte"].ToString() + "&email=" + txt_email.Text);
                    }
                    else
                        lbl_mensaje.Text = "NO HAY REGISTROS CON LOS DATOS SUMINISTRADOS";
                }
                catch (Exception ex) { lbl_mensaje.Text = ex.Message; }
            }


        }

        protected void b_volver_Click(object sender, EventArgs e)
        {
            Response.Redirect("wbfrm_Index_Reportes.aspx");
        }

        protected void ddl_seleccion_tipo_factura_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (ddl_seleccion_tipo_factura.SelectedValue == "Facturas Clientes")
            {
                this.habilitar("Clientes");
            }
            if (ddl_seleccion_tipo_factura.SelectedValue == "Facturas Externas")
            {
                this.habilitar("Externas");
            }
            if (ddl_seleccion_tipo_factura.SelectedValue == "Facturas Servicios")
            {
                this.habilitar("Servicios");
            }
            if (ddl_seleccion_tipo_factura.SelectedValue == "Facturas Proveedores")
            {
                this.habilitar("Proveedor");
            }
            if (ddl_seleccion_tipo_factura.SelectedValue == "Seleccione...")
            {
                this.habilitar("Seleccion");
            }
        }

        protected void chk_mail_CheckedChanged(object sender, EventArgs e)
        {
            try
            {
                if (chk_mail.Checked)
                {
                    txt_email.Enabled = true;
                    txt_email.BackColor = System.Drawing.Color.White;
                    RegularExpressionValidator1.Enabled = true;
                }
                else
                {
                    txt_email.Enabled = false;
                    txt_email.BackColor = System.Drawing.Color.LightGray;
                    RegularExpressionValidator1.Enabled = true;
                }
            }
            catch (Exception ex) { lbl_mensaje.Text = ex.Message; }
        }

    }
}